<!-- 注册页面 -->
<template>
	<view class="container" >
		
		<!-- 设置白色背景防止软键盘把下部绝对定位元素顶上来盖住输入框等 -->
		<view class="wrapper">
			<view class="login-title">注册</view>
			<view class="input-content">
				<view class="input-item">
					<input type="number" :value="mobile" placeholder="请输入手机号" maxlength="11" data-key="mobile"
						@input="inputChange"  placeholder-class="placeHoldPlace" />
					<text class="clear-account iconfont iconziyuan34" v-show="mobile && curFocus == 'mobile'"
						@click="clearContent('mobile')"></text>
				</view>
				
				<view class="input-item">
					<input type="text" :value="imgCode" maxlength="4" placeholder="请输入图形验证码" data-key="imgCode"
						@input="inputChange"  placeholder-class="placeHoldPlace" />
					<view class="pwd-right">
						<text class="clear-pwd iconfont iconziyuan34" v-show="imgCode && curFocus == 'imgCode'"
							@click="clearContent('imgCode')"></text>
						<image @click="getImgCode" :src="showCodeImg" />
					</view>
				</view>
				<view class="input-item">
					<input type="number" :value="smsCode" maxlength="6" placeholder="请输入短信验证码" data-key="smsCode"
						@input="inputChange" @confirm="toRegist"  placeholder-class="placeHoldPlace" />
					<view class="pwd-right">
						<text class="clear-pwd iconfont iconziyuan34" v-show="smsCode && curFocus == 'smsCode'"
							@click="clearContent('smsCode')"></text>
						<view :style="{ opacity: countDownM ? 0.3 : 1 }" class="sms-code-view" @click="getSmsCode">
							<text class="sms-code">{{countDownM ? `${countDownM}s后重新获取` : '获取验证码'}}</text>
						</view>
					</view>
				</view>
				<view class="input-item" v-if="smsma" >
					<input type="number" :value="smsma" placeholder="邀请码" maxlength="11" data-key="mobile"
						@input="inputChange"  placeholder-class="placeHoldPlace" />
					<view class="pwd-right">
						<text > 邀请码</text>
					</view>
				</view>
				
			</view>
			<button class="confirm-btn" @click="toRegist" :style="{opacity: !(mobile && smsCode && imgCode) || logining ? 0.5 : 1}">
				注册
			</button>
			<view class="login-register">
				<text class="mobile-login">已有账号～</text>
				<text class="register" @click="navTo('/pages/public/login', 1)">去登录></text>
			</view>
		</view>
		
		

		<!-- #ifdef MP-WEIXIN -->
		<wxBindPhone ref="wxBindPhone"></wxBindPhone>
		<!-- #endif -->

		
	</view>
</template>

<script>
	import wxBindPhone from '@/components/wxBindPhone.vue'
	import { mapMutations } from 'vuex'
	

	export default {
		components: {
			wxBindPhone,
		},
		data() {
			return {
				mobile: '',
				smsCode: '',
				showCodeImg: '',
				imgCode: '', //图形验证码
				imgCodeKey: '', //图形验证码的key
				logining: false,
				countDownM: 0, //短信验证码倒计时
				timeOutId: '', //定时器的返回值
				client: 1, //终端类型， 1、H5(微信内部浏览器) 2、H5(微信小程序)；3、app
				isPreClick: false,
				smsma:'',
			}
		},
		onLoad(options) {
			console.log('options',options);
			if(options.q){
				let queryAll = decodeURIComponent(options.q);
				 // uni.showModal({
					// 				title:'3123',
					// 			 	content: queryAll,
					// 			 	success: function(res) {
					// 			 		if (res.confirm) {
					// 						console.log('用户点击确定');
					// 			 		} else if (res.cancel) {
					// 			 			console.log('用户点击取消');
					// 			 		}
					// 				}
					// 			 });
				// let queryAll='https://yj.hws.ink/params?=12546'
				this.smsma=this.analysisUrlParam(queryAll).item0
			}
		},
		onShow() {
			let _this = this;
			this.getImgCode()
			
		},
		methods: {
			...mapMutations(['login', 'setUserCenterData']),

					// 分解url
			analysisUrlParam: function(url) {
				var queryParts = url.slice(url.indexOf("?") + 1).split('&');
				var params = queryParts.length > 0 ? {} : null;
				queryParts.map(function(item,index) {
					var a = item.split('=')
					params['item'+index] = a[1]
				})
				return params
			},
				
			//获取图形验证码
			getImgCode() {
				this.$request({
					url: 'v3/captcha/common/getCaptcha'
				}).then((res) => {
					if (res.state == 200) {
						this.showCodeImg = 'data:image/png;base64,' + res.data.captcha
						this.imgCodeKey = res.data.key
					} else {
						this.$modal.msg(res.data.msg);
					}
				})
			},
			
			inputChange(e) {
				const key = e.currentTarget.dataset.key
				this[key] = e.detail.value
			},
			navBack() {
				this.$back()
			},
			toRegist() {
				const {
					mobile,
					smsCode,
					imgCode,
					imgCodeKey,
					logining
				} = this
				if (!(mobile && smsCode && imgCode) || logining) {
					return
				}
				if (mobile.length < 11) {
					this.$modal.msg('请填写格式正确的手机号')
					return
				}
				// if (!this.check_agreement) {
				// 	this.$api.msg('请同意用户注册协议及隐私政策!')
				// 	uni.pageScrollTo({
				// 		selector: '#agreement',
				// 		duration: 400
				// 	})
				// 	return false
				// }

				let imgReg = /^[A-Za-z0-9]+$/g
				if (!imgReg.test(this.imgCode)) {
					this.imgCode = ''
					this.$modal.msg('图形验证码格式不正确')
					return false
				}

				this.logining = true
				let param = {}
				param.url = 'v3/frontLogin/oauth/register'
				param.data = {}
				param.method = 'POST'
				param.data.phone = mobile
				param.data.code = smsCode
				param.data.verifyCode = imgCode
				param.data.verifyKey = imgCodeKey
				// #ifdef APP-PLUS
				param.data.clientId = uni.getStorageSync('clientId');
				param.data.source = uni.getSystemInfoSync().platform == 'android' ? 3 : 4
				// #endif
				// #ifdef H5
				param.data.source = 2
				// #endif
				// #ifdef MP-WEIXIN
				param.data.source = 6
				// #endif
				// #ifdef MP-BAIDU
				param.data.source = 7
				// #endif
				// #ifdef MP-ALIPAY
				param.data.source = 8
				// #endif
				// #ifdef MP-TOUTIAO
				param.data.source = 9
				// #endif
				if (this.spreaderMemberId) {
					param.data.spreaderKey = this.spreaderMemberId
				}
				param.method = 'POST'
				this.$request(param).then((res) => {
					if (res.state == 200) {
						//更新登录时间
						uni.setStorage({
							key: 'sld_login_time',
							data: new Date().getTime()
						})
						
						res.data.loginTime = Date.parse(new Date()) //登录时间
						this.login(res.data)
						
						//获取个人中心的数据
						this.$request({
							url: 'v3/member/front/member/memberInfo'
						}).then((result) => {
							this.setUserCenterData(result.data)
							// this.$loginGoPage()
							uni.reLaunch({
								url:'/pages/index/index'
							})
						})
					} else {
						//错误提示
						this.$modal.msg(res.msg)
						// 验证码刷新
						this.getImgCode()
					}
					this.logining = false
				})
			},
			//清空输入的内容
			clearContent(type) {
				this[type] = ''
			},

			//获取短信验证码
			getSmsCode() {
				if (this.isPreClick) {
					return
				}
				this.isPreClick = true

				if (this.countDownM) {
					return
				}

				if (!this.$checkMobile(this.mobile)) {
					this.isPreClick = false
					return false
				} else if (!this.imgCode) {
					this.isPreClick = false
					this.$modal.msg('请输入图形验证码!')
				} else {
					let param = {}
					param.url = 'v3/msg/front/commons/getCaptcha'
					param.data = {}
					param.data.verifyType = 2
					param.data.mobile = this.mobile
					param.data.verifyCode = this.imgCode
					param.data.verifyKey = this.imgCodeKey
					this.$request(param).then((res) => {
						if (res.state == 200) {
							this.countDownM = 60
							this.countDown()
						} else {
							this.$api.msg(res.msg)
							this.imgCode = ''
							this.isPreClick = false
							this.getImgCode()
						}
					})
				}
			},
			//跳转事件 type:跳转类型，1为redirectTo 2为navigateTo
			navTo(url, type) {
				// if (type == 1) {
				// 	this.$Router.replace(url)
				// } else if (type == 2) {
				// 	this.$Router.push(url)
				// }
			},
			//倒计时
			countDown() {
				this.countDownM--
				if (this.countDownM == 0) {
					this.isPreClick = false
					clearTimeout(this.timeOutId)
				} else {
					this.timeOutId = setTimeout(this.countDown, 1000)
				}
			},
		}
	}
</script>

<style lang="scss">
	page {
		background: #fff;
		width: 750rpx;
		margin: 0 auto;
	}

	.placeHoldPlace {
		// color: $main-third-color;
		font-size: 28rpx;
	}

	.container {
		position: relative;
		width: 750rpx;
		height: 100vh;

		background: #fff;
	}

	.wrapper {
		position: relative;
		z-index: 90;
		background: #fff;
		padding-bottom: 40upx;
		/* #ifdef MP-BAIDU */
		margin-top: 160rpx;
		/* #endif */
	}

	.back-btn {
		margin-left: 40rpx;
		margin-top: 40rpx;
		/* #ifndef H5 */
		margin-top: 88rpx;
		/* #endif */
		font-size: 32rpx;
		// color: $main-font-color;
		display: inline-block;
	}

	.login-title {
		position: relative;
		margin-top: 80rpx;
		margin-bottom: 70rpx;
		margin-left: 65rpx;
		font-size: 36rpx;
		color: #333;
		font-weight: bold;

		&:after {
			position: absolute;
			left: 0;
			bottom: -10rpx;
			content: '';
			width: 76rpx;
			height: 6rpx;
			background: linear-gradient(90deg,
					red 0%,
					rgba(255, 138, 0, 0) 100%);
		}
	}

	.input-content {
		padding: 0 65rpx;
	}

	.input-item {
		display: flex;
		flex-direction: column;
		align-items: flex-start;
		justify-content: center;
		height: 80rpx;
		margin-bottom: 50upx;
		border-bottom: 1px solid rgba(0, 0, 0, 0.1);
		position: relative;

		input {
			color: #2d2d2d;
			font-size: 30rpx;
		}

		.clear-account {
			position: absolute;
			right: 6rpx;
			top: 28rpx;
			font-size: 26rpx;
			color: #ddd;
		}

		&:nth-child(2) {
			.pwd-right {
				position: absolute;
				right: 6rpx;
				top: 14rpx;
				display: flex;
				align-items: center;

				.clear-pwd {
					font-size: 26rpx;
					color: #ddd;
				}

				image {
					width: 132rpx;
					height: 55rpx;
					box-shadow: 0px 5rpx 9rpx 1rpx rgba(102, 102, 102, 0.1);
					border-radius: 6rpx;
					margin-left: 20rpx;
				}
			}
		}

		&:nth-child(3) {
			// margin-bottom: 0;

			.pwd-right {
				position: absolute;
				right: 6rpx;
				top: 6rpx;
				display: flex;
				align-items: center;

				.clear-pwd {
					font-size: 26rpx;
					color: #ddd;
				}

				.sms-code-view {
					// border: 1px solid var(--color_main);
					padding: 14rpx;
					border-radius: 6rpx;
					line-height: 0;
					margin-left: 20rpx;

					.sms-code {
						// color: var(--color_main);
						font-size: 24rpx;
						line-height: 24rpx;
					}
				}
			}
		}
		&:last-child {
			// margin-bottom: 0;
		
			.pwd-right {
				position: absolute;
				right: 18rpx;
				top: 6rpx;
				display: flex;
				align-items: center;
				font-size: 26rpx;
				color: #cd8f84;
				
			}
		}
		

		.tit {
			height: 50upx;
			line-height: 56upx;
			// font-size: $font-sm + 2upx;
			// color: $font-color-base;
		}

		input {
			height: 60upx;
			// font-size: $font-base + 2upx;
			// color: $font-color-dark;
		}
	}

	.confirm-btn {
		width: 620rpx;
		height: 88rpx;
		line-height: 88rpx;
		margin: 90rpx auto;
		background: #9b4c3a;
		opacity: 0.7;
		border-radius: 44rpx;
		color: #fff !important;
		font-size: 36rpx;
	}

	

	.agreement-part {
		position: absolute;
		left: 0;
		bottom: 60rpx;
		width: 100%;
		font-size: 26rpx;
		color: #999999;
		text-align: center;

		&.agreement-part-low {
			position: relative !important;
			margin-top: 100rpx;
			margin-bottom: 30rpx;
		}

		.register_icon {
			width: 46rpx;
			height: 46rpx;
		}

		.agreement {
			// color: var(--color_main);
			// border-bottom: 1rpx solid var(--color_main);
		}
	}

	.login-register {
		display: flex;
		justify-content: center;
		margin-top: 33rpx;

		.mobile-login {
			color: #949494;
			font-size: 28rpx;
			line-height: 34rpx;
		}

		.register {
			// color: var(--color_main);
			font-size: 28rpx;
			line-height: 34rpx;
		}
	}
</style>
